1 module about_strings;
2 
3 import dunit;
4 import helpers;
5 
6 class AboutStrings
7 {
8   mixin UnitTest;
9 
10   @Test void stringSlicing()
11   {
12     auto sentence = "The quick brown fox";
13     assertEquals(sentence[0], FILL_IN_THIS_CHAR);
14     assertEquals(sentence[1 .. 3], FILL_IN_THIS_STRING);
15     assertEquals(sentence[$ - 1], FILL_IN_THIS_CHAR);
16     assertEquals(sentence[$ - 3 .. $], FILL_IN_THIS_STRING);
17   }
18 
19   @Test void stringConcatenation()
20   {
21     auto str1 = "Hello";
22     auto str2 = " World";
23     auto str = str1 ~ str2;
24     assertEquals(str, FILL_IN_THIS_STRING);
25   }
26 
27   @Test void stringsAreImmutable()
28   {
29     auto str = "hello";
30     // we cannot do this:
31     // str[0]='H';   why?
32     // but we must get a mutable reference before
33     char[] s = str.dup;
34     s[0] = 'H';
35     assertEquals(s, FILL_IN_THIS_STRING);
36   }
37 
38   @Test void stringLiterals()
39   {
40     auto str1 = `c:\nurten`;    //  \n is not getting interpreted as newline
41     auto str2 = r"c:\nurten";   //  same here
42     assertEquals(str1, FILL_IN_THIS_STRING);
43     assertEquals(str2, FILL_IN_THIS_STRING);
44   }
45 
46   @Test void unicodeLiterals()
47   {
48     string s = "résumé"c; // same as "résumé"
49     wstring w = "résumé"w;
50     dstring d = "résumé"d;
51 
52     assertEquals(s.length, FILL_IN_THIS_NUMBER);
53     assertEquals(w.length, FILL_IN_THIS_NUMBER);
54     assertEquals(d.length, FILL_IN_THIS_NUMBER);
55   }
56 }